package com.shanjupay.transaction.api;

import com.shanjupay.common.domain.BusinessException;
import com.shanjupay.transaction.api.dto.PayChannelDTO;
import com.shanjupay.transaction.api.dto.PayChannelParamDTO;
import com.shanjupay.transaction.api.dto.PlatformChannelDTO;

import java.util.List;

/*
*
* 平台服务类型接口
*
* */
public interface PayChannelService {
    /*
    * 获取闪聚提供所有的平台服务类型
    *
    * */
    List<PlatformChannelDTO> queryPlatformChannel() throws BusinessException;

    /*
    * 应用与服务进行绑定
    *往appId的应用进行绑定服务platformChannelCodes
    */

    void bindPlatformChannelForApp(String appId,String platformChannelCodes) throws BusinessException;

    /*
    * 查询某个应用是否已经与服务进行绑定
    * 已经绑定 返回1
    * 未绑定   返回0
    * */
    int queryAppBindPlatformChannel(String appId,String platformChannel) throws  BusinessException;

    /*
    *
    * 根据服务类型查询对应支付渠道的列表
    * */
    List<PayChannelDTO>  queryPayChannelByPlatformChannel(String platformChannelCode) throws BusinessException;

    /*
    * 配置支付渠道参数
    *本质就是支付渠道参数表中添加一条或者已存在就进行更新一条记录
    * */
    void savePayChannelParam(PayChannelParamDTO payChannelParamDTO) throws  BusinessException;

    /*
    *
    * 查询支付渠道参数列表
    * 根据appId 和服务类型code 获取支付渠道参数列表
    * */
    List<PayChannelParamDTO> queryPayChannelParamByAppAndPlatform(String appId,String platformChannel) throws BusinessException;
    /*
    * 根据appId和服务类型code和支付渠道，获取对应的支付渠道参数
    *
    * */
    PayChannelParamDTO   queryParamByAppPlatformAndPayChannel(String appId,String platformChannel,String payChannel) throws  BusinessException;
}
